"use strict"
/**
 * 成员管理
 * @param  {[type]} app      [description]
 * @param  {[type]} settings [description]
 * @return {[type]}          [description]
 */
module.exports = function(app, settings) {
	var debug = require('debug')('qywx-api'),
		express = require('express'),
		util = require('util'),
		url = require('url'),
		QywxAPI = require('../utils/QywxAPI')();

	var router = express.Router();

	/**
	 * 批量删除成员
	 * params{
	 * 	参数	必须	说明
		access_token	是	调用接口凭证
		useridlist	是	成员UserID列表。对应管理端的帐号
	 * }
	 */
	router.post("/batchdelete", function(req, res, next) {
		let accessToken = res.locals.account.accessToken;
		let useridlist = req.body.useridlist;

		QywxAPI.batchdeleteMember(accessToken, useridlist, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data
			});
		});
	});
	/**
			 * 删除成员
			 * params{
			 * 	参数	必须	说明
				access_token	是	调用接口凭证
				userid	是	成员UserID。对应管理端的帐号
			 * }
			 */
	router.get("/delete/", function(req, res, next) {

		let accessToken = res.locals.account.accessToken;
		let userid = req.query.userid;

		QywxAPI.deleteMember(accessToken, userid, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data
			});
		});


	});
	/**
		 * 更新成员
		 ** Params{
			参数	      必须	      说明
			access_token	是	调用接口凭证
			userid	是	成员UserID。对应管理端的帐号，企业内必须唯一。长度为1~64个字节
			name	否	成员名称。长度为0~64个字节
			department	否	成员所属部门id列表
			position	否	职位信息。长度为0~64个字节
			mobile	否	手机号码。企业内必须唯一，mobile/weixinid/email三者不能同时为空
			gender	否	性别。1表示男性，2表示女性
			email	否	邮箱。长度为0~64个字节。企业内必须唯一
			weixinid	否	微信号。企业内必须唯一。（注意：是微信号，不是微信的名字）
			enable	否	启用/禁用成员。1表示启用成员，0表示禁用成员
			avatar_mediaid	否	成员头像的mediaid，通过多媒体接口上传图片获得的mediaid
			extattr	否	扩展属性。扩展属性需要在WEB管理端创建后才生效，否则忽略未知属性的赋值
		 * }
		 */
	router.post('/update', function(req, res, next) {

		let accessToken = res.locals.account.accessToken;
		let userid = req.body.userid;
		let name = req.body.name;
		let department = req.body.department;
		let position = req.body.position;
		let mobile = req.body.mobile;
		let gender = req.body.gender;
		let email = req.body.email;
		let weixinid = req.body.weixinid;
		let avatar_mediaid = req.body.avatar_mediaid;
		let extattr = req.body.extattr;

		QywxAPI.updateMember(accessToken, userid, name, department, position, mobile, gender, email, weixinid, avatar_mediaid, extattr, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data
			});
		});


	});

	/**
	 * 创建成员
	 * Params{
		参数	      必须	      说明
		access_token	是	调用接口凭证
		userid	是	成员UserID。对应管理端的帐号，企业内必须唯一。长度为1~64个字节
		name	是	成员名称。长度为1~64个字节
		department	否	成员所属成员id列表
		position	否	职位信息。长度为0~64个字节
		mobile	否	手机号码。企业内必须唯一，mobile/weixinid/email三者不能同时为空
		gender	否	性别。1表示男性，2表示女性
		email	否	邮箱。长度为0~64个字节。企业内必须唯一
		weixinid	否	微信号。企业内必须唯一。（注意：是微信号，不是微信的名字）
		avatar_mediaid	否	成员头像的mediaid，通过多媒体接口上传图片获得的mediaid
		extattr	否	扩展属性。扩展属性需要在WEB管理端创建后才生效，否则忽略未知属性的赋值
	 * }
	 */
	router.post("/create", function(req, res, next) {
		let accessToken = res.locals.account.accessToken;
		let userid = req.body.userid;
		let name = req.body.name;
		let department = req.body.department;
		let position = req.body.position;
		let mobile = req.body.mobile;
		let gender = req.body.gender;
		let email = req.body.email;
		let weixinid = req.body.weixinid;
		let avatar_mediaid = req.body.avatar_mediaid;
		let extattr = req.body.extattr;

		QywxAPI.createMember(accessToken, userid, name, department, position, mobile, gender, email, weixinid, avatar_mediaid, extattr, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data
			});
		});

	});
	/**
			 * 获取成员
			 * params{
			 * 	参数	必须	说明
				access_token	是	调用接口凭证
				userid	是	成员UserID。对应管理端的帐号
			 * }
			 */
	router.get("/get", function(req, res, next) {
		let accessToken = res.locals.account.accessToken;
		let userid = req.query.userid;

		QywxAPI.getMember(accessToken, userid, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data
			});
		});
	});
	/**
	 * 获取部门成员列表
	 * params{
		参数	必须	说明
		access_token	是	调用接口凭证
		department_id	是	获取的部门id
		fetch_child	否	1/0：是否递归获取子部门下面的成员 默认为1
		status	否	0获取全部成员，1获取已关注成员列表，2获取禁用成员列表，4获取未关注成员列表。status可叠加，未填写则默认为4
	 * }
	 */
	router.get("/simplelist", function(req, res, next) {

		let accessToken = res.locals.account.accessToken;
		let department_id = req.query.department_id;
		let fetch_child = req.query.fetch_child;
		let status = req.query.status;

		QywxAPI.getSimpleListMember(accessToken, department_id, fetch_child, status, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data
			});
		});
	});

	/**
	* 获取部门成员详情
			params{
				参数	必须	说明
				access_token	是	调用接口凭证
				department_id	是	获取的部门id
				fetch_child	否	1/0：是否递归获取子部门下面的成员
				status	否	0获取全部成员，1获取已关注成员列表，2获取禁用成员列表，4获取未关注成员列表。
				status可叠加,未填写则默认为4
			}
	**/
	router.get("/list", function(req, res, next) {

		let accessToken = res.locals.account.accessToken;
		let department_id = req.query.department_id;
		let fetch_child = req.query.fetch_child;
		let status = req.query.status;

		QywxAPI.getMemberListDetail(accessToken, department_id, fetch_child, status, function(err, data) {
			if (err) {
				return res.status(500).json({
					success: false,
					errCode: 500,
					errMsg: err.message
				});
			}
			return res.status(200).json({
				success: true,
				data: data.userlist
			});
		});
	});


	app.use('/member', router);
}
